home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
United Public Domain Gold 2
/
United Public Domain Gold 2.iso
/
utilities
/
pu453.dms
/
pu453.adf
/
extras
/
basic_sources
/
hillgen2.bas
< prev
next >
Wrap
BASIC Source File
|
1992-11-08
|
3KB
|
152 lines
REM ------- HillGen 2.21
SCREEN 1,320,256,4,1
WINDOW 1,"",(0,0)-(310,240),0,1
RANDOMIZE TIMER
FOR x = 0 TO 15
PALETTE x,x/15,x/15,x/15
NEXT x
COLOR 15
REM $Option K200
DIM d(100,100)
maxh = 0.0001
FOR xcc = 1 TO 40
LOCATE 1,1:COLOR 15:PRINT "Gen Hill :";xcc
hei = INT(RND*30)+10
wid = INT(RND*40)+25
sx = INT(RND*100)
sy = INT(RND*100)
FOR x = 1 TO wid
y = 1
px = (sx+x) MOD 100
py = (sy+y) MOD 100
PSET (px+101,py+31),6
y = wid
px = (sx+x) MOD 100
py = (sy+y) MOD 100
PSET (px+101,py+31),6
NEXT x
FOR y = 1 TO wid
x = 1
px = (sx+x) MOD 100
py = (sy+y) MOD 100
PSET (px+101,py+31),6
x = wid
px = (sx+x) MOD 100
py = (sy+y) MOD 100
PSET (px+101,py+31),6
NEXT y
FOR x = 0 TO wid
LOCATE 2,1:PRINT INT(x/wid*100);"%";" "
FOR y = 0 TO wid
IF INKEY$ = "q" THEN y = wid : x = wid
v = (SIN((x*6.282/wid)-1.570)+1)*(SIN((y*6.282/wid)-1.570)+1)
v = v / 4
v = v ^ 1/2
v = v * hei
px = (sx+x) MOD 100
py = (sy+y) MOD 100
INCR px : INCR py
d(px,py) = d(px,py) + v
IF d(px,py) > maxh THEN maxh = d(px,py)
PSET (px+100,py+30),d(px,py)/3
NEXT y
NEXT x
NEXT xcc
CLS
LOCATE 1,1:PRINT "Normalising"
FOR x = 1 TO 100
LOCATE 2,1:PRINT INT(x);"%";" "
FOR y = 1 TO 100
d(x,y) = d(x,y) * 15/maxh
PSET (x+100,y+30),d(x,y)
NEXT y
NEXT x
CLS
xas = 100
FOR y = 2 TO 100
COLOR 10
LOCATE 1,25 : PRINT "Plotting : ";y;"%"
FOR x = 2 TO 100 STEP 3
IF INKEY$ = "Q" THEN y = 100
sf = (y+100)/100
xs = x - 50
xs = xs * sf
xs = xs + 150
ys = y + 50
dx = d(x,y) - d(x-1,y)
dy = d(x,y) - d(x,y-1)
dc = dx - dy
dc = dc * 6
dc = dc + 7
IF dc < 0 THEN dc = 0
IF dc > 15 THEN dc = 15
LINE (xs,ys)-(xs+sf,ys-(d(x,y)*3)),dc,bf
IF (xs+(99*sf)) < 320 THEN LINE (xs+(99*sf),ys)-(xs+(99*sf)+sf,ys-(d(x,y)*3)),dc,bf
IF (xs-(99*sf)) > 0 THEN LINE (xs-(99*sf),ys)-(xs-(99*sf)+sf,ys-(d(x,y)*3)),dc,bf
NEXT x
FOR x = 3 TO 100 STEP 3
IF INKEY$ = "Q" THEN y = 100
sf = (y+100)/100
xs = x - 50
xs = xs * sf
xs = xs + 150
ys = y + 50
dx = d(x,y) - d(x-1,y)
dy = d(x,y) - d(x,y-1)
dc = dx - dy
dc = dc * 6
dc = dc + 7
IF dc < 0 THEN dc = 0
IF dc > 15 THEN dc = 15
LINE (xs,ys)-(xs+sf,ys-(d(x,y)*3)),dc,bf
IF (xs+(99*sf)) < 320 THEN LINE (xs+(99*sf),ys)-(xs+(99*sf)+sf,ys-(d(x,y)*3)),dc,bf
IF (xs-(99*sf)) > 0 THEN LINE (xs-(99*sf),ys)-(xs-(99*sf)+sf,ys-(d(x,y)*3)),dc,bf
NEXT x
FOR x = 4 TO 100 STEP 3
IF INKEY$ = "Q" THEN y = 100
sf = (y+100)/100
xs = x - 50
xs = xs * sf
xs = xs + 150
ys = y + 50
dx = d(x,y) - d(x-1,y)
dy = d(x,y) - d(x,y-1)
dc = dx - dy
dc = dc * 6
dc = dc + 7
IF dc < 0 THEN dc = 0
IF dc > 15 THEN dc = 15
LINE (xs,ys)-(xs+sf,ys-(d(x,y)*3)),dc,bf
IF (xs+(99*sf)) < 320 THEN LINE (xs+(99*sf),ys)-(xs+(99*sf)+sf,ys-(d(x,y)*3)),dc,bf
IF (xs-(99*sf)) > 0 THEN LINE (xs-(99*sf),ys)-(xs-(99*sf)+sf,ys-(d(x,y)*3)),dc,bf
NEXT x
NEXT y
DECR y
LOCATE 1,25 : PRINT " "
FOR x = 2 TO 100
IF INKEY$ = "Q" THEN y = 100
sf = (y+100)/100
xs = x - 50
xs = xs * sf
xs = xs + 150
ys = y + 50
dx = d(x,y) - d(x-1,y)
dy = d(x,y) - d(x,y-1)
dc = dx - dy
dc = dc * 6
dc = dc + 7
IF dc < 0 THEN dc = 0
IF dc > 15 THEN dc = 15
LINE (xs,ys)-(xs+sf,ys-(d(x,y)*3)),5,bf
LINE (xs+(99*sf),ys)-(xs+(99*sf)+sf,ys-(d(x,y)*3)),5,bf
LINE (xs-(99*sf),ys)-(xs-(99*sf)+sf,ys-(d(x,y)*3)),5,bf
NEXT x
LOCATE 28,1 : INPUT a$
SYSTEM